from django.shortcuts import render
from django.http import HttpResponse
from django.http import HttpResponseRedirect
from django.contrib.auth import authenticate, login
from django.template import Context, loader
from django.shortcuts import render_to_response
from TwitterApp.models import UtilisateurVO, UtilisateurBO
from django.views.decorators.csrf import csrf_protect
from django.core.urlresolvers import reverse
from django.forms import ModelForm
from django.core.context_processors import csrf

def se_connecter(request):
    if request.method == 'POST':
        form = UtilisateurVO(request.POST)
        if form.is_valid():
            #utilisateur = UtilisateurBO()
            #utilisateur.username = form.nom_utilisateur
            #utilisateur.password = form.mot_de_passe
            
            utilisateur = UtilisateurBO.objects.get(username=form.nom_utilisateur)
            if utilisateur == None:
                #Si utilisateur existe pas en base de donnee
                None

            else:
                #si utilisateur existe
                None
        else:
            #si formulaire pas bon
            None

    else:
        #si pas method POST
        None

    return render(request, 'login.html', { 'form': form, })

#	#	if form.is_valid():
#	#		utilisateur = UtilisateurBO()
#	#		#sondage.question = formulaire.cleaned_data['question']
#	#		#sondage.date=datetime.date.today()
#	#		#sondage.save()
# #           utilisateur.username = 
#	#		return HttpResponse("OK")
# #   else:
# #       form = UtilisateurVO()
#	#return render(request, 'TwitterApp\WebContent\login.html', { 'form': form, })

def index(request):
    return HttpResponse("Hello, world. You're at the polls index.")

def login_view(request):
    #template = loader.get_template("login.html")
    form = UtilisateurVO()
    return render(request, 'login.html',{ 'form': form, })
   
@csrf_protect
def authenticator(request):
    if request.method == 'POST':
        form = UtilisateurVO(request.POST)
        if form.is_valid():
            return HttpResponse("GREAT")
    else:
        form = UtilisateurVO()

    return render(request, 'login.html', { 'form': form, })

#ici code pour les commentaires et pages de messages
#TODO : integrer au travail en cours !
def main(request):
	postes = Post.objects.all().order_by("-date")
	pagination = Paginator(posts, 10)
	
	#ici on utilise le paginator pour les pages
	
	try: page = int(request.GET.get("page", '1'))
	except ValueError: page = 1
	
	try:
		postes = pagination.page(page)
	except (InvalidPage, EmptyPage):
		postes = pagination.page(pagination.num_pages)
		
	return render_to_response("list.html", dict(postes=postes, user=request.user))
	
class CommentaireForm(ModelForm):
	class Meta:
		model = Comment
		exclude = ["post"]
		
# permet d'ajouter un nouveau commentaire
def AjouterCommentaire(request, pk):
	p = request.POST
	
	# on regarde s'il y a un texte
	if p.has_key("texte") and p["texte"]:
		auteur = "Anonyme" #par défaut on met un auteur anonyme
		if p["auteur"]: auteur = p["auteur"] #on regarde si l'auteur n'est pas anonyme
		
		commentaire = Commentaire(post=Post.objects.get(pk=pk))
		cf = CommentaireForm(p, instance=comment)
		cf.fields["auteur"].required = False
		
		commantaire = cf.save(commit=False)
		commantaire.auteur = auteur
		commentaire.save()
		# on persiste en base le nouveau commentaire
		
	return HttpResponseRedirect(reverse("twitter.views", args=[pk]))
	
def post(request, pk):
	poste = Post.objects.get(pk=int(pk))
	commentaires = Comment.objects.filter(post=post)
	d = dict(post=post, comments=comments, form=CommentaireForm(), user=request.user)
	d.update(csrf(request))
	return render_to_response("post.html", d)
	
	
	
#ça serai bien ici d'ajouter la suppression des commentaires !
#TODO : en cours
# a test !!!
def SuppressionCommentaire(request, post_pk, pk=None):
	if request.user.is_staff:
		if not pk: pklst = request.POST.getlist("delete")
		else: pklst = [pk]
		
		for pk in pklst:
		 Commentaire.objects.get(pk=pk).delete()
		
	return HttpResponseRedirect(reverse("twitter.views.post", args=[post_pk]))